<?php
/**
 * Управление несколькими openid пользователя
 *
 * @package default
 * @author lucky
 **/
class Model_OpenId extends RL_Model2
{
	public function add_openid_to_user($user, $openid)
	/**
	 * Добавить openid к аккаунту пользователя.
	 * 
	 * @param fobject $user юзер (аккаунт)
	 * @param string $openid openid (url)
	 * @return boolean
	 */
	{
		$res = false;
		$store      = $this->store;
		$db         = $this->db;
		$T          = $db->db_prefix;
		$sql_oid    = $user->id;
		$sql_openid = $db->quote($openid);

		$sql = "SELECT oid FROM {$T}class_auth_openid WHERE openid = {$sql_openid} LIMIT 1";
		$rs = $store->query($sql);
		if (!$rs->next()) {
			$sql = "REPLACE INTO {$T}class_auth_openid(oid, openid) VALUES($sql_oid,$sql_openid)";
			$res = $db->execute($sql);
		}
		return $res;
	}
	
	public function get_openid_for_user ($user)
	/**
	 * Вернуть итератор на openid, аутентифицированных для указанного аккаунта
	 * 
	 * @param fobject $user юзер (аккаунт)
	 * @return boolean
	 */
	{
		return $this->get_openid_for_user_by_oid ($user->id);
	} // end of function get_openid_for_user
	
	public function get_openid_for_user_by_oid ($user_oid)
	/**
	 * Вернуть итератор на openid, аутентифицированных для указанного аккаунта
	 * 
	 * @param int $user_oid ид юзера
	 * @return boolean
	 */
	{
		$store   = $this->store;
		$T       = $this->db->db_prefix;

		$sql = "SELECT oid, openid 
			FROM {$T}class_auth_openid
			WHERE oid = $user_oid
			ORDER BY openid
			";
		$rs = $store->query($sql);
		return $rs;
	} // end of function get_openid_for_user_by_oid
	
	
	public function find_user_by_openid($openid)
	/**
	 * Вернуть аккаунт пользователя по указанному openid.
	 * 
	 * @param Store $store 
	 * @param string $openid openid (url)
	 * @return User->data похожий на Princiapl-профиль-пользователя
	 */
	{
		$res = NULL;

		$T          = $this->db->db_prefix;
		$sql_openid = $this->db->quote($openid);

		$sql = "SELECT DISTINCT O.*
			FROM {$T}objects O
			INNER JOIN {$T}class_auth_openid OAO ON O.oid = OAO.oid
			WHERE OAO.openid = $sql_openid
			LIMIT 1
			";
		$user = $this->store->findSql($sql)->next();

		if ($user) { $res =  $user->data; $res['user_id'] = $user->id; }
		return $res;
	}
	
} // END class 
